/*************************************************************************
	> File Name: decrypt.h
	> Author: xuwenlong
	> Mail: myxuan475@126.com 
	> Created Time: 2018年10月17日 星期三 14时25分30秒
 ************************************************************************/
#ifndef __DECRYPT_H__
#define __DECRYPT_H__
#include <string>
#include <json/json.h>
#include <openssl/aes.h>
#include <openssl/ssl.h>
#include <openssl/ossl_typ.h>
#include <openssl/evp.h>

class UtilsCrypt
{
public:
    typedef enum {ecb = 0,cbc}MODE;

    UtilsCrypt(const std::string &key_,MODE mode_ = ecb);
    virtual ~UtilsCrypt();

    bool InitCrypt();
    std::string Encrypt(const char *str, int len);
    std::string Decrypt(const std::string &str);

    std::string FinalEncrypt();

//    std::string Encrypt(const unsigned char *data,int len);
    int Decrypt(const char *data,int len, char *&out);
private:
    std::string private_key;
    MODE   mode;//0:ecb,1:cbc
    EVP_CIPHER_CTX *ctx;
};


#endif
